/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.TipoCargaEstudioLaboratorioFisica;
import hibernate.objeto.AnalisisCargaEstudioLaboratorio;
import hibernate.objeto.TipoCargaEstudioLaboratorio;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class TipoCargaEstudioLaboratorioLogica extends CapaLogica {

    /**
     * Retorna el objeto TipoCargaEstudioLaboratorio según el id.
     *
     * @param idTipoCargaEstudioLaboratorio  El id de la Til
     *  Test Estudio Cardiologia
     * @return El objeto TilTestEstudioCardiologia consultado,
     * null si no existe
     */
    static TipoCargaEstudioLaboratorio getTipoCargaEstudioLaboratorioLogicaPorId(
            int idTipoCargaEstudioLaboratorio) {
        return TipoCargaEstudioLaboratorioFisica.
                getTipoCargaEstudioLaboratorioPorId(idTipoCargaEstudioLaboratorio);
    }

    /**
     * Retorna un vector de TipoCargaEstudioLaboratorio según
     * el AnalisisCargaEstudioLaboratorio.
     *
     * @param unAnalisisCargaEstudioLaboratorio , el objeto
     * AnalisisCargaEstudioLaboratorio por el cual se consulta
     * @return Un vector de objetos TipoCargaEstudioLaboratorio
     */
    public static Vector<TipoCargaEstudioLaboratorio>
            getVectorDeTipoCargaEstudioLaboratorioPorAnalisisCargaEstudioLaboratorio(
            AnalisisCargaEstudioLaboratorio unAnalisisCargaEstudioLaboratorio) {
        Vector<TipoCargaEstudioLaboratorio> retorno = new Vector<TipoCargaEstudioLaboratorio>();
        Set<TipoCargaEstudioLaboratorio> arregloDeLocalidades =
                unAnalisisCargaEstudioLaboratorio.getTipoCargaEstudioLaboratorios();
        Iterator<TipoCargaEstudioLaboratorio> iter = arregloDeLocalidades.iterator();

        while(iter.hasNext()){
            retorno.add(iter.next());
        }
        return retorno;
    }

    /**
     * Retorna el objeto TipoCargaEstudioLaboratorio del
     * par TipoCargaEstudioLaboratorio, AnalisisCargaEstudioLaboratorio
     * según el nombre
     * deTipoCargaEstudioLaboratorio y el nombre del AnalisisCargaEstudioLaboratorio
     *
     * @param nombreLocalidad El nombre de la localidad consultada
     * @param nombreProvincia El nombre de la provincia consultada
     * @return El objeto Localidad consultado, null si no existe
     */
    public static TipoCargaEstudioLaboratorio
            getTipoCargaEstudioLaboratorioPorNombreYNombreAnalisisCargaEstudioLaboratorio(
            String nombreTipoCargaEstudioLaboratorio,
            String nombreAnalisisCargaEstudioLaboratorio) {
        return TipoCargaEstudioLaboratorioFisica.
                getTipoCargaEstudioLaboratorioPorNombreYNombreAnalisisCargaEstudioLaboratorio(
                nombreTipoCargaEstudioLaboratorio, nombreAnalisisCargaEstudioLaboratorio);
    }

    /**
     * Retorna un arreglo de strings con los
     * TipoCargaEstudioLaboratorio de un AnalisisCargaEstudioLaboratorio dado.
     *
     * @param unAnalisisCargaEstudioLaboratorio El objeto
     * AnalisisCargaEstudioLaboratorio por el cual se consulta
     * @return Un arreglo de strings con los nombres de TipoCargaEstudioLaboratorio
     */
    public static String[]
            getListaDeTipoCargaEstudioLaboratorioPorAnalisisCargaEstudioLaboratorio(
            AnalisisCargaEstudioLaboratorio unAnalisisCargaEstudioLaboratorio) {
        // Obtiene todas los tipos del objeto analisis
        //y los deposita en un vector
        Vector<TipoCargaEstudioLaboratorio> vectorTipoCargaEstudioLaboratorio =
                getVectorDeTipoCargaEstudioLaboratorioPorAnalisisCargaEstudioLaboratorio(
                    unAnalisisCargaEstudioLaboratorio);

        // El ComboBox necesita para ser cargado un arreglo de strings, por lo
        // que se crea
        String[] arregloStringTipoCargaEstudioLaboratorio =
                new String[vectorTipoCargaEstudioLaboratorio.size() + 2];
        arregloStringTipoCargaEstudioLaboratorio =
                vectorAArregloString(vectorTipoCargaEstudioLaboratorio);

        return arregloStringTipoCargaEstudioLaboratorio;
    }

    /**
     * Convierte un vector de TipoCargaEstudioLaboratorio en un arreglo de los nombres de los
     * TipoCargaEstudioLaboratorio.
     *
     * @param vectorTipoCargaEstudioLaboratorio El vector a convertir
     * @param arregloString La lista resultante vacia
     * @return La lista resultante cargada
     */
    private static String[] vectorAArregloString(
            Vector<TipoCargaEstudioLaboratorio> vectorTipoCargaEstudioLaboratorio) {

        int tamaño = vectorTipoCargaEstudioLaboratorio.size() + 1;
        String[] arregloStringModificado = new String[tamaño];

        String primerElemento = "";

        arregloStringModificado[0] = primerElemento;

        for (int i = 0; i < vectorTipoCargaEstudioLaboratorio.size(); i++){
            arregloStringModificado[i+1] =
                    vectorTipoCargaEstudioLaboratorio.get(i).
                    getNombreTipoCargaEstudioLaboratorio();
        }

        return arregloStringModificado;
    }
}
